home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
AXREAD12.ZIP
/
ENTER.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1996-08-03
|
10KB
|
763 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 3.2O (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Boolean BOOLEAN006
Boolean BOOLEAN007
Integer INTEGER003
Integer INTEGER004
String STRING001
String STRING017
String STRING018
String STRING019
String STRING020
String TSTRING021(10)
String TSTRING022(4)
String STRING023
String STRING024
String TSTRING025(15)
String STRING027
Int INT001
Int INT002
Int INT003
Int INT004
Int INT005
Int INT007
Int INT008
Int INT009
Int INT010
Declare Procedure PROC001(String STRING002)
Declare Procedure PROC002(String STRING003, Integer INTEGER001, String STRING004)
Declare Procedure PROC003(String STRING005, String STRING006, String STRING007, String STRING008)
Declare Procedure PROC004(String STRING009, String STRING010, String STRING011, String STRING012, Integer INTEGER002, String STRING013, String STRING014, String STRING015, String STRING016, Boolean BOOLEAN001, Boolean BOOLEAN002)
Declare Procedure PROC005(Var String STRING026, Int INT006, Boolean BOOLEAN008)
;------------------------------------------------------------------------------
Goto LABEL004
End
;------------------------------------------------------------------------------
Procedure PROC001(String STRING002)
GetUser
FOpen 3, STRING002, 1, 3
FPutLn 3, PCBMac("@BOARDNAME@")
STRING001 = ReadLine(PCBDat(), 2)
Tokenize STRING001
FPutLn 3, GetToken()
FPutLn 3, GetToken()
If (OnLocal()) Then
STRING001 = "COM0:"
Else
STRING001 = ReadLine(PCBDat(), 52)
Endif
FPutLn 3, STRING001
If (OnLocal()) Then
STRING001 = "0 BAUD,N,8,1"
Else
STRING001 = ReadLine(PCBDat(), 53) + " BAUD,N,8,1"
Endif
FPutLn 3, STRING001
FPutLn 3, "0"
If (U_Alias == "") Then
STRING001 = U_Name()
Else
STRING001 = U_Alias
Endif
Tokenize STRING001
FPutLn 3, GetToken()
FPutLn 3, GetToken()
FPutLn 3, U_City
FPutLn 3, "1"
FPutLn 3, U_Sec
FPutLn 3, PCBMac("@TIMELEFT@")
FClose 3
FClose -1
EndProc
;------------------------------------------------------------------------------
Procedure PROC002(String STRING003, Integer INTEGER001, String STRING004)
MsgToFile CurConf(), INTEGER001, TempPath() + "temp" + String(PcbNode())
FOpen 2, TempPath() + "temp" + String(PcbNode()), 0, 3
While (STRING001 <> "Message Body:") Do
FGet 2, STRING001
EndWhile
FOpen 3, STRING003, 1, 3
:LABEL001
If (Ferr(2)) Goto LABEL003
FGet 2, STRING001
If (Left(STRING001, 1) == Chr(1)) Goto LABEL002
If (Left(STRING001, Len(STRING004)) == STRING004) Then
FPutLn 3, STRING001
Else
FPutLn 3, STRING004 + STRING001
Endif
:LABEL002
Goto LABEL001
:LABEL003
FClose 2
FClose 3
Delete TempPath() + "temp" + String(PcbNode())
EndProc
;------------------------------------------------------------------------------
Procedure PROC003(String STRING005, String STRING006, String STRING007, String STRING008)
FOpen 3, STRING005, 1, 0
FPutLn 3, Mixed(STRING007)
FPutLn 3, Mixed(STRING006)
FPutLn 3, STRING008
FPutLn 3, String(HiMsgNum() + 1)
FPutLn 3, ConfInfo(CurConf(), 1)
FPutLn 3, "NO"
FClose 3
EndProc
;------------------------------------------------------------------------------
Procedure PROC004(String STRING009, String STRING010, String STRING011, String STRING012, Integer INTEGER002, String STRING013, String STRING014, String STRING015, String STRING016, Boolean BOOLEAN001, Boolean BOOLEAN002)
PROC001(STRING011)
If (BOOLEAN002) PROC002(STRING010, INTEGER002, STRING016)
PROC003(STRING012, STRING013, STRING014, STRING015)
SaveScrn
If (Right(TempPath(), 1) == "\") Then
STRING001 = TempPath()
Else
STRING001 = TempPath() + "\"
Endif
Shell 1, INT001, STRING009, STRING001
RestScrn
Delete STRING011
If (Exist(TempPath() + "MSGABT")) Then
Delete TempPath() + "MSGABT"
Wait
ElseIf (BOOLEAN001) Then
Message CurConf(), STRING013, STRING014, STRING015, "R", 0, 0, ConfInfo(CurConf(), 31), STRING010
Else
Message CurConf(), STRING013, STRING014, STRING015, "N", 0, 0, ConfInfo(CurConf(), 31), STRING010
Endif
Delete STRING010
Delete STRING012
EndProc
:LABEL004
If (TokCount() > 0) Then
STRING001 = Trim(Upper(GetToken()), " ")
If (STRING001 == "ALL") Then
BOOLEAN004 = 1
Endif
Endif
INTEGER003 = FileInf(ReadLine(PCBDat(), 29), 4) / 400
INT005 = ReadLine(PCBDat(), 237)
FClose -1
STRING023 = "@X0CU@X04ser @X0F@OPTEXT@ @X0Cn@X04ot @X0Cf@X04ound@X0C!@CLREOL@"
STRING024 = PPEPath() + "EXT" + String(PcbNode()) + ".BAT"
If (Exist(STRING024)) Then
BOOLEAN005 = 1
Else
BOOLEAN005 = 0
Endif
TSTRING022(0) = "@X08[@X1FSEARCH@X08] [@X07RE-ENTER@X08] [@X07ABORT@X08] [@X07CONTINUE@X08] [@X07HELP@X08]"
TSTRING022(1) = "@X08[@X07SEARCH@X08] [@X1FRE-ENTER@X08] [@X07ABORT@X08] [@X07CONTINUE@X08] [@X07HELP@X08]"
TSTRING022(2) = "@X08[@X07SEARCH@X08] [@X07RE-ENTER@X08] [@X1FABORT@X08] [@X07CONTINUE@X08] [@X07HELP@X08]"
TSTRING022(3) = "@X08[@X07SEARCH@X08] [@X07RE-ENTER@X08] [@X07ABORT@X08] [@X1FCONTINUE@X08] [@X07HELP@X08]"
TSTRING022(4) = "@X08[@X07SEARCH@X08] [@X07RE-ENTER@X08] [@X07ABORT@X08] [@X07CONTINUE@X08] [@X1FHELP@X08]"
GetUser
StartDisp 1
DispFile PPEPath() + "ENTER", 4
STRING020 = PPEPath() + "DATA\" + Strip(Left(U_Name(), 4) + Right(U_Name(), 4), " ")
If (Exist(STRING020)) Goto LABEL005
AnsiPos 40, 10
PrintLn "@X0CNo address book found, type BOOK"
AnsiPos 40, 11
PrintLn "@X0Cfrom the main menu to create one"
Goto LABEL008
:LABEL005
INT002 = 1
FOpen 1, STRING020, 0, 0
:LABEL006
If (Ferr(1)) Goto LABEL007
FGet 1, TSTRING021(INT002)
Inc INT002
Goto LABEL006
:LABEL007
FClose 1
INT003 = INT002 - 2
AnsiPos 51, 7
Print "@X08[@X0F@X08/@X0F@X07 to select names@X08]"
:LABEL008
If (BOOLEAN004) Goto LABEL009
AnsiPos 50, 4
PROC005(STRING017, 24, 1)
:LABEL009
Select Case (STRING017)
Case "@USER@", "@ALL@"
If (CurSec() < INT005) Then
STRING017 = "ALL"
AnsiPos 50, 4
Print "@X0FALL@X08·····················"
AnsiPos 40, 6
Print " "
BOOLEAN003 = 1
Goto LABEL017
Else
STRING017 = "@USER@"
Endif
If (STRING017 == "") STRING017 = "ALL"
Case "ALL"
AnsiPos 50, 4
Print "@X0FALL"
AnsiPos 40, 6
Print " "
BOOLEAN003 = 1
Case Else
If (ConfInfo(CurConf(), 50) <> 0) Goto LABEL017
INT002 = U_RecNum(STRING017)
If (INT002 < 0) Then
OpText STRING017
AnsiPos 33, 10
PrintLn STRING023
INT002 = 0
Gosub LABEL026
:LABEL010
STRING001 = Upper(TInkey(0))
Select Case (STRING001)
Case "6"
STRING001 = "RIGHT"
Case "4"
STRING001 = "LEFT"
End Select
If (STRING001 == "LEFT") Then
If (INT002 == 0) Then
INT002 = 4
Goto LABEL011
Endif
Dec INT002
:LABEL011
Gosub LABEL026
Endif
If (STRING001 == "RIGHT") Then
If (INT002 == 4) Then
INT002 = 0
Goto LABEL012
Endif
Inc INT002
:LABEL012
Gosub LABEL026
Endif
If (STRING001 == "S") Then
INT002 = 0
Gosub LABEL026
STRING001 = Chr(13)
Endif
If (STRING001 == "R") Then
INT002 = 1
Gosub LABEL026
STRING001 = Chr(13)
Endif
If (STRING001 == "A") Then
INT002 = 2
Gosub LABEL026
STRING001 = Chr(13)
Endif
If (STRING001 == "C") Then
INT002 = 3
Gosub LABEL026
STRING001 = Chr(13)
Endif
If (STRING001 == "H") Then
INT002 = 4
Gosub LABEL026
STRING001 = Chr(13)
Endif
If (STRING001 == Chr(13)) Then
AnsiPos 33, 10
ClrEol
AnsiPos 33, 11
ClrEol
If (INT002 == 0) Then
AnsiPos 33, 10
OpText STRING017
Print "@X0AS@X02earching @X0Au@X02ser @X0Ab@X02ase @X0Af@X02or @X0F@OPTEXT@.@X07.@X08."
AnsiPos 33, 11
Print "@X0FM@X07atches @X0FF@X07ound@X08: @X0F"
INT004 = 0
For INTEGER004 = 1 To INTEGER003
If (INT004 > 13) Goto LABEL014
GetAltUser INTEGER004
If (U_Alias == "") Then
STRING001 = U_Name()
Goto LABEL013
Endif
STRING001 = U_Alias
:LABEL013
If (InStr(STRING001, STRING017) > 0) Then
TSTRING025(INT004) = " " + Left(STRING001, 30) + " "
Inc INT004
AnsiPos 48, 11
Print INT004
Endif
Next
If (INT004 == 0) Then
FReAltUser
AnsiPos 33, 10
Print "@X0CNo users matching @X0F@OPTEXT@ @X0Cfound!@CLREOL@"
AnsiPos 33, 11
ClrEol
AnsiPos 1, 15
Wait
End
Endif
:LABEL014
FReAltUser
AnsiPos 33, 10
ClrEol
AnsiPos 33, 11
ClrEol
Dec INT004
For INTEGER004 = 0 To INT004
AnsiPos 46, 9 + INTEGER004
PrintLn "@X08▌@X07" + TSTRING025(INTEGER004) + "@X08▐"
Next
AnsiPos 46, 9 + INTEGER004
Print "@X08▀▀@X38▌@X3F/8=up /2=down enter=select@X38▐@X08▀▀"
INTEGER004 = 0
AnsiPos 47, 9 + INTEGER004
Print "@X1F" + TSTRING025(INTEGER004) + "@X07"
While (STRING019 <> Chr(13)) Do
STRING019 = TInkey(0)
If (STRING019 == "2") Then
STRING019 = "DOWN"
Goto LABEL015
Endif
If (STRING019 == "8") Then
STRING019 = "UP"
Endif
:LABEL015
If (STRING019 == "UP") Then
AnsiPos 47, 9 + INTEGER004
Print "@X07" + TSTRING025(INTEGER004)
If (INTEGER004 == 0) Then
INTEGER004 = INT004
AnsiPos 47, 9 + INTEGER004
Print "@X1F" + TSTRING025(INTEGER004) + "@X07"
Goto LABEL016
Endif
Dec INTEGER004
AnsiPos 47, 9 + INTEGER004
Print "@X1F" + TSTRING025(INTEGER004) + "@X07"
:LABEL016
Continue
Endif
If (STRING019 == "DOWN") Then
AnsiPos 47, 9 + INTEGER004
Print "@X07" + TSTRING025(INTEGER004)
If (INTEGER004 == INT004) Then
INTEGER004 = 0
AnsiPos 47, 9 + INTEGER004
Print "@X1F" + TSTRING025(INTEGER004) + "@X07"
Continue
Endif
Inc INTEGER004
AnsiPos 47, 9 + INTEGER004
Print "@X1F" + TSTRING025(INTEGER004) + "@X07"
Endif
EndWhile
For INT002 = 0 To INT004 + 1
AnsiPos 46, 9 + INT002
ClrEol
Next
STRING017 = Trim(TSTRING025(INTEGER004), " ")
AnsiPos 50, 4
Print "@X08························"
AnsiPos 50, 4
Print "@X0F" + STRING017
Goto LABEL017
Endif
If (INT002 == 1) Then
STRING017 = ""
AnsiPos 50, 4
Print "@X08························"
AnsiPos 50, 4
Goto LABEL008
Endif
If (INT002 == 2) End
If (INT002 == 3) Then
BOOLEAN006 = 1
Goto LABEL017
Endif
If (INT002 == 4) Then
StartDisp 2
Cls
DispFile PPEPath() + "ENTERHLP", 4
StartDisp 1
DispFile PPEPath() + "ENTER", 4
AnsiPos 33, 10
PrintLn STRING023
Gosub LABEL026
Endif
Endif
Else
Goto LABEL017
Endif
Goto LABEL010
End Select
:LABEL017
If (Exist(STRING020)) Goto LABEL018
AnsiPos 40, 10
PrintLn " "
AnsiPos 40, 11
PrintLn " "
Goto LABEL019
:LABEL018
AnsiPos 62, 6
Print " "
AnsiPos 51, 7
Print " "
:LABEL019
AnsiPos 50, 5
PROC005(STRING018, 24, 0)
If (STRING018 == "") Then
AnsiPos 1, 15
Wait
End
Endif
STRING019 = NoChar()
If (BOOLEAN003) Goto LABEL023
AnsiPos 50, 6
Gosub LABEL025
BOOLEAN003 = 0
While (BOOLEAN003 == 0) Do
STRING019 = Upper(TInkey(0))
If (STRING019 == NoChar()) Then
Gosub LABEL025
BOOLEAN003 = 1
Endif
If (STRING019 == YesChar()) Then
Gosub LABEL024
BOOLEAN003 = 1
Endif
If (STRING019 == "LEFT") Then
If (INT002 == 1) Then
Gosub LABEL025
Goto LABEL020
Endif
Gosub LABEL024
Endif
:LABEL020
If (STRING019 == "RIGHT") Then
If (INT002 == 1) Then
Gosub LABEL025
Goto LABEL021
Endif
Gosub LABEL024
Endif
:LABEL021
If (STRING019 == Chr(13)) Then
If (INT002 == 1) Then
STRING019 = YesChar()
Goto LABEL022
Endif
STRING019 = NoChar()
:LABEL022
BOOLEAN003 = 1
Endif
EndWhile
:LABEL023
If (STRING019 == YesChar()) Then
BOOLEAN007 = 1
Else
BOOLEAN007 = 0
Endif
AnsiPos 1, 15
If (BOOLEAN005) Then
GetUser
If (U_Alias == "") Then
STRING001 = U_Name()
Else
STRING001 = U_Alias
Endif
PROC004(STRING024, TempPath() + "MSGTMP", TempPath() + "DORINFO1.DEF", TempPath() + "MSGINF", HiMsgNum() + 1, STRING017, STRING001, STRING018, "->", BOOLEAN007, 0)
Else
If (BOOLEAN007) Then
STRING019 = "R"
Else
STRING019 = "N"
Endif
If (BOOLEAN006) Then
KbdStuff "E^M" + STRING017 + "^MC^M" + STRING018 + "^M" + STRING019 + "^M"
Else
KbdStuff "E^M" + STRING017 + "^M" + STRING018 + "^M" + STRING019 + "^M"
Endif
Endif
End
:LABEL024
AnsiPos 50, 6
Print "@X07NO"
AnsiPos 56, 6
Print "@X1FYES@X0F"
INT002 = 1
Return
:LABEL025
AnsiPos 56, 6
Print "@X07YES"
AnsiPos 50, 6
Print "@X1FNO@X0F"
INT002 = 2
Return
:LABEL026
AnsiPos 33, 11
Print TSTRING022(INT002)
Return
End
;------------------------------------------------------------------------------
Procedure PROC005(Var String STRING026, Int INT006, Boolean BOOLEAN008)
String STRING027
Int INT007
Int INT008
Int INT009
Int INT010
STRING026 = ""
INT007 = 0
:LABEL027
If (BOOLEAN008) Then
STRING027 = Upper(TInkey(0))
Else
STRING027 = TInkey(0)
Endif
If (BOOLEAN008) Then
If (Len(STRING027) > 1) Then
If (INT008 == 0) Then
TSTRING021(0) = STRING026
Endif
If (STRING027 == "UP") Then
If (INT008 > 0) Then
TSTRING021(INT008) = STRING026
Dec INT008
AnsiPos 50, 4
Print "@X08························"
AnsiPos 50, 4
Print "@X0F" + TSTRING021(INT008)
INT007 = Len(TSTRING021(INT008))
STRING026 = TSTRING021(INT008)
INT009 = GetX()
INT010 = GetY()
AnsiPos 62, 6
Print "@X0FRe@X07cord # @X08[@X0F" + String(INT008) + "@X08] "
AnsiPos INT009, INT010
Endif
Endif
If (STRING027 == "DOWN") Then
If (INT008 < INT003) Then
TSTRING021(INT008) = STRING026
Inc INT008
AnsiPos 50, 4
Print "@X08························"
AnsiPos 50, 4
Print "@X0F" + TSTRING021(INT008)
INT007 = Len(TSTRING021(INT008))
STRING026 = TSTRING021(INT008)
INT009 = GetX()
INT010 = GetY()
AnsiPos 62, 6
Print "@X0FRe@X07cord # @X08[@X0F" + String(INT008) + "@X08] "
AnsiPos INT009, INT010
Endif
Endif
Endif
Endif
TSTRING021(INT008) = STRING026
If (STRING027 == Chr(13)) Goto LABEL028
If (STRING027 == Chr(29)) Goto LABEL027
If (STRING027 == Chr(8)) Then
If (INT007 == 0) Goto LABEL027
INT007 = INT007 - 1
Backup 1
Print "@X08·"
Backup 1
STRING026 = Left(STRING026, INT007)
Goto LABEL027
Endif
If (!(Len(STRING027) == 1)) Goto LABEL027
If (Asc(STRING027) < 31) Goto LABEL027
If (INT007 == INT006) Goto LABEL027
STRING026 = STRING026 + STRING027
INT007 = INT007 + 1
Print "@X08", STRING027
Backup 1
Delay 1
Print "@X07", STRING027
Backup 1
Delay 1
Print "@X0F", STRING027
Goto LABEL027
:LABEL028
STRING026 = Trim(TSTRING021(INT008), " ")
EndProc
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 6 End
; 1 Cls
; 6 ClrEol
; 3 Wait
; 131 Goto
; 103 Let
; 37 Print
; 7 PrintLn
; 86 If
; 3 DispFile
; 5 FOpen
; 7 FClose
; 3 FGet
; 20 FPutLn
; 3 StartDisp
; 3 GetUser
; 5 Delete
; 16 Gosub
; 3 Return
; 2 Delay
; 5 Inc
; 4 Dec
; 2 Tokenize
; 1 Shell
; 2 KbdStuff
; 2 OpText
; 55 AnsiPos
; 4 Backup
; 2 Message
; 1 SaveScrn
; 1 RestScrn
; 1 GetAltUser
; 2 FReAltUser
; 5 EndProc
; 1 MsgToFile
;
;
; ■ Functions used :
;
; 2 -
; 1 /
; 77 +
; 2 -
; 55 ==
; 3 <>
; 7 <
; 3 <=
; 5 >
; 6 >=
; 76 !
; 6 &&
; 4 ||
; 5 Len(
; 4 Upper()
; 5 Left()
; 2 Right()
; 2 Ferr()
; 12 Chr()
; 1 Asc()
; 1 InStr()
; 3 Trim()
; 5 U_Name()
; 3 NoChar()
; 3 YesChar()
; 1 Strip()
; 7 String()
; 7 CurConf()
; 5 PCBDat()
; 5 PPEPath()
; 4 PcbNode()
; 5 ReadLine()
; 2 OnLocal()
; 1 CurSec()
; 5 GetToken()
; 4 Exist()
; 2 GetX()
; 2 GetY()
; 1 FileInf()
; 11 TempPath()
; 1 TokCount()
; 1 U_RecNum()
; 2 Mixed()
; 2 HiMsgNum()
; 2 PCBMac()
; 4 ConfInfo()
; 5 TInkey()
;
;------------------------------------------------------------------------------
;
; Analysis flags : RSd
;
; R - Read user ■ 5
; User records are read, this may signify that someone wants to get
; various informations about a user (for example his password), but
; this may also be normal for a program accessing user records (for
; example a User Editor)
; ■ Search for : GETALTUSER
;
; S - Shell to DOS ■ 5
; This may be normal if the PPE need to execute an external command,
; but may be actually anything... nasty (formating HD, rebooting,...)
; or usefull (sorting, maintenance,...). Check!
; ■ Search for : SHELL
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 3 For/Next
; 3 While/EndWhile
; 58 If/Then or If/Then/Else
; 2 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------